package com.moshme.project.domain;

//添加mybatisplus的三个包引用

import com.baomidou.mybatisplus.annotation.*;

//如果自己的包名修改了，则需要改成对应的包名
import com.moshme.common.core.domain.BaseEntity;
import com.moshme.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotNull;

/**
 * 项目信息对象 project_info
 *
 * @author moshme
 * @date 2023-08-11
 */
@Data
@Accessors(chain = true)
@TableName("project_info")
@ApiModel(description = "项目信息")
public class ProjectInfo implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 项目信息id
     */
    @TableId(type = IdType.AUTO)
    @ApiModelProperty("项目id")
    private Long projectId;


    /**
     * 对接单位
     */
    @ApiModelProperty("对接单位")
    @Excel(name = "对接单位")
    @NotNull(message = "对接单位不能为空")
    private String unit;

    /**
     * 项目名称
     */
    @ApiModelProperty("项目名称")
    @Excel(name = "项目名称")
    @NotNull(message = "项目名称不能为空")
    private String projectName;

    /**
     * 介绍人
     */
    @ApiModelProperty("介绍人")
    @Excel(name = "介绍人")
//    @NotNull
    private String introducer;

    /**
     * 对接单位对接人
     */
    @ApiModelProperty("对接单位对接人")
    @Excel(name = "对接单位对接人")
    private String recepter;

    /**
     * 对接人联系方式
     */
    @ApiModelProperty("对接人联系方式")
    @Excel(name = "对接人联系方式")
    private String phone;

    /**
     * 项目预算
     */
    @ApiModelProperty("项目预算")
    @Excel(name = "项目预算")
    private String projectBudget;

    /**
     * 项目阶段
     */
    @ApiModelProperty("项目阶段(预留)")
    @Excel(name = "项目阶段")
    private Integer projectStep;

//    @ApiModelProperty("项目状态(0-未开始，1-进行中，2-已完结)")
//    @Excel(name = "项目状态")
//    private Integer projectStatus;

    /**
     * 项目开始日期
     */
    @ApiModelProperty("项目开始日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "项目开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    @NotNull(message = "项目开始日期不能为空")
    private LocalDate projectStartDate;

    /**
     * 项目结束日期
     */
    @ApiModelProperty("项目结束日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "项目结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    @NotNull(message = "项目结束日期不能为空")
    private LocalDate projectEndDate;

    /**
     * 详细地址
     */
    @ApiModelProperty("详细地址")
    @Excel(name = "详细地址")
    private String address;

    /**
     * 部门职位
     */
    @ApiModelProperty("部门职位")
    @Excel(name = "部门职位")
    private String deptPost;

    @ApiModelProperty("项目类型")
    @Excel(name = "项目类型")
    @NotNull(message = "项目类型不能为空")
    private Integer projectType;

    @ApiModelProperty("总负责人")
    @Excel(name = "总负责人")
    @NotNull(message = "总负责人不能为空")
    private Long geo;

    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /** 创建者 */
    @ApiModelProperty("创建者")
    @TableField(fill = FieldFill.INSERT)
    private String createBy;

    @ApiModelProperty("修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /** 更新者 */
    @ApiModelProperty("更新者")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateBy;

    /** 备注 */
    @ApiModelProperty("备注")
    @Excel(name = "备注")
    private String remark;

    /**
     * 员工组
     */
    @TableField(exist = false)
    private Long[] userIds;

}

